"""
演示： 子类中如何访问父类中的成员
    方式一： 父类名.方法名
            特点：可以精准访问

    方式二： super()方法名
           特点： 只能访问最左边那个父类

故事三：
   不同的顾客有不同的需求，既有想吃聂茹凤自己独特配方的煎饼，又有顾客想吃老师傅的传统煎饼
   还有顾客钟情于启点方法的煎饼。


"""

# 定义师傅类
class Master:
    def __init__(self):
        self.recipe = '老师傅的传统配方'

    def practice(self):
        print(f'使用 {self.recipe} 制作煎饼果子')

# 定义学校类
class School:
    def __init__(self):
        self.recipe = '启点独门配方'

    def practice(self):
        print(f'使用 {self.recipe} 制作煎饼果子')

# 定义徒弟类
class Prenticev(Master, School):

     def __init__(self):
         self.recipe = '聂茹凤的秘方'

     def practice(self): # 重写父类的方法
        print(f'聂茹凤使用 {self.recipe} 制作煎饼果子')

     # 老师傅的手艺
     def master_practive(self):
         Master.__init__(self) # 老师傅的配方
         Master.practice(self) # 老师傅的手艺


     # 启点的手艺
     def school_practice(self):
         School.__init__(self)
         School.practice(self)


if __name__ == '__main__':
    p = Prenticev()
    print(p.recipe)  # 子类自己的属性
    p.practice()    # 调用子类自己的方法

    print('======================')

    p.school_practice()

    p.master_practive()

